iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1
自我挑戰組

關於 Ruby on Rails 的那些事系列 第 9

Day 9 - 淺談 REST and RESTful

  • 分享至 

  • xImage
  •  

什麼是 REST 和 RESTful:

英文全名:Representational State Transfer
中文全名:表現層狀態轉換
一種軟體架構風格 ( 而非標準 ),結構清晰、易理解與方便使用 ( 與 SOAP 和 XML-RPC相比之下 )。符合這種風格的設計簡稱為 RESTful,像幾個知名網站 Amazon、Yahoo、Facebook、Google 等有符合這種設計風格。

資源(Resources)

資源是 REST 全名中省略的主詞,雖省略卻是很重要的觀念,它表示網路上的實體,可能是一段文字、一張圖片、一首音樂,然後用戶端透過網址(URL)獲得資源,就像有地址就可以找到你家。

表現層(Repersontation)

資源的表現方法有很多種,剛剛提到的文字就可以使用 txt、HTML、JSON 來呈現,這就稱作「表現層」。

嚴格來說,有些網址的「.html」副檔名是不需要的,因為解析資源的格式是「表現層」的工作,應該要在 HTTP HEAD 中定義 Accept 中的 Content-Type,使用內容協商才是對表現層的設定。

狀態轉換(State Transfer)

想當初剛開始學習網站設計,無法理解 HTTP 的無狀態協定是什麼意思,今天要寫 RESTful 設計方式,就剛好看到一篇文章介紹很詳細,比喻很貼切呢,事情是這樣的...
今天打開 Chrome,進入一個網站,就代表我與伺服器的一個互動,在過程中會碰到到資料與狀態的變化。而 HTML 是一個無狀態的協議,意思是把每一個請求都視為獨立的,與之前任何請求沒有關係。還是不懂嗎?來個生活中的例子吧,想要知道一個學生的成績,會有幾個步驟:

  1. 先登入學生資料系統
  2. 進入查詢學生成績的畫面
  3. 搜尋你想要查詢的學生
  4. 點選學生名字或學號,就可以查看學生的所有成績

上述的執行過程就屬於有狀態的,必須按著給一個步驟才能達到結果,只要沒有登入系統、或沒有到查詢畫面,其中一步沒有成功,後續動作就無法執行。相反的,如果輸入一段網址就可以得到某個學生的成績,這就是無狀態,因為查到學生成績不須依賴其他資源或狀態。

所有請求都具獨立性,如果想要操作伺服器中的資源,就得透過「方法」讓伺服器發生「狀態轉換」(State Transfer)。這些請求的方法由 HTTP 提供(HTTP Request Method中的GETPOSTPUTDELETE方法)來進行,以便操作伺服器資源。

RESTful 風格

地址是你家在哪,網址就是資源在哪。
網址中只能有名詞不能有動詞,名詞是資源,而方法是動詞,動詞就由 HTTP 提供。
來介紹一下有些動詞,分別做了什麼~

參考資料:
維基百科
簡單理解REST設計風格與RESTful API
什麼是RESTful API?

學無止盡,每天都要進步一點點!


上一篇
Day 8 - 程式碼區塊 Block 「Lambda」 and 「Proc」
下一篇
Day 10 - Q:你怎麼找到我的? A:Routes 告訴我了。
系列文
關於 Ruby on Rails 的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言